home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 17 / Computer Interactive cdrom 17 - gen 99.iso / ZDNETIT / CONTENT / OPTIVC16.ZIP / INCLUDE.ZIP / VCFMATH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-21  |  11.3 KB  |  229 lines

  1. /*  VCFmath.h
  2.  
  3.   vector management functions:
  4.   arithmetic and math functions performed on each individual element
  5.   of an array or vector of data type "fComplex"  (complex float)
  6.  
  7.   Copyright (c) 1996-1998 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VCFMATH_H
  12. #define __VCFMATH_H
  13.  
  14. #ifndef __VCFSTD_H 
  15. #include <VCFstd.h>
  16. #endif
  17.  
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /********************* Comparisons ****************************/
  24.  
  25. ui   __vf   VCF_cmp_eq0( cfVector Y, cfVector X, ui size );
  26. ui   __vf   VCF_cmp_ne0( cfVector Y, cfVector X, ui size );
  27. ui   __vf   VCF_cmp_eqC( cfVector Y, cfVector X, ui size, fComplex C );
  28. ui   __vf   VCF_cmp_neC( cfVector Y, cfVector X, ui size, fComplex C );
  29. ui   __vf   VCF_cmp_eqV( cfVector Z, cfVector X, cfVector Y, ui size );
  30. ui   __vf   VCF_cmp_neV( cfVector Z, cfVector X, cfVector Y, ui size );
  31. ui   __vf   VCF_cmp_eq0ind( uiVector Ind, cfVector X, ui size );
  32. ui   __vf   VCF_cmp_ne0ind( uiVector Ind, cfVector X, ui size );
  33. ui   __vf   VCF_cmp_eqCind( uiVector Ind, cfVector X, ui size, fComplex C );
  34. ui   __vf   VCF_cmp_neCind( uiVector Ind, cfVector X, ui size, fComplex C );
  35. ui   __vf   VCF_cmp_eqVind( uiVector Ind, cfVector X, cfVector Y, ui size );
  36. ui   __vf   VCF_cmp_neVind( uiVector Ind, cfVector X, cfVector Y, ui size );
  37.  
  38.  
  39. /********************  Standard Arithmetics   ***************************/
  40.  
  41. void  __vf   VCF_limit(  cfVector Y, cfVector X, ui size, fComplex Min,
  42.                                                           fComplex Max );
  43. void  __vf   VCF_flush0( cfVector Y, cfVector X, ui size, fComplex AbsMin );
  44. void  __vf   VCF_flushInv( cfVector Y, cfVector X, ui size, fComplex AbsMin );
  45.  
  46. void  __vf   VCFx_equV(  cfVector Y, cfVector X, ui size,
  47.                          fComplex A, fComplex B );
  48. void  __vf   VCF_addC(   cfVector Y, cfVector X, ui size, fComplex C );
  49. void  __vf   VCF_subC(   cfVector Y, cfVector X, ui size, fComplex C );
  50. void  __vf   VCF_subrC(  cfVector Y, cfVector X, ui size, fComplex C );
  51. void  __vf   VCF_mulC(   cfVector Y, cfVector X, ui size, fComplex C );
  52. void  __vf   VCF_divC(   cfVector Y, cfVector X, ui size, fComplex C );
  53. void  __vf   VCF_divrC(  cfVector Y, cfVector X, ui size, fComplex C );
  54. void  __vf   VCFx_divrC( cfVector Y, cfVector X, ui size,
  55.                          fComplex A, fComplex B, fComplex C );
  56.  
  57. void  __vf   VCF_addReC(  cfVector Y, cfVector X, ui size, float CRe );
  58. void  __vf   VCF_subReC(  cfVector Y, cfVector X, ui size, float CRe );
  59. void  __vf   VCF_subrReC( cfVector Y, cfVector X, ui size, float CRe );
  60. void  __vf   VCF_mulReC(  cfVector Y, cfVector X, ui size, float CRe );
  61. void  __vf   VCF_divReC(  cfVector Y, cfVector X, ui size, float CRe );
  62. void  __vf   VCF_divrReC( cfVector Y, cfVector X, ui size, float CRe );
  63.  
  64. void  __vf   VCF_addV(  cfVector Z, cfVector X, cfVector Y, ui size );
  65. void  __vf   VCF_subV(  cfVector Z, cfVector X, cfVector Y, ui size );
  66. void  __vf   VCF_subrV( cfVector Z, cfVector X, cfVector Y, ui size );
  67. void  __vf   VCF_mulV(  cfVector Z, cfVector X, cfVector Y, ui size );
  68. void  __vf   VCF_divV(  cfVector Z, cfVector X, cfVector Y, ui size );
  69. void  __vf   VCF_divrV( cfVector Z, cfVector X, cfVector Y, ui size );
  70.  
  71. void  __vf   VCF_addReV(  cfVector Z, cfVector X, fVector Y, ui size );
  72. void  __vf   VCF_subReV(  cfVector Z, cfVector X, fVector Y, ui size );
  73. void  __vf   VCF_subrReV( cfVector Z, cfVector X, fVector Y, ui size );
  74. void  __vf   VCF_mulReV(  cfVector Z, cfVector X, fVector Y, ui size );
  75. void  __vf   VCF_divReV(  cfVector Z, cfVector X, fVector Y, ui size );
  76. void  __vf   VCF_divrReV( cfVector Z, cfVector X, fVector Y, ui size );
  77.  
  78. void  __vf   VCFx_addV(  cfVector Z, cfVector X, cfVector Y, ui size,
  79.                          fComplex A, fComplex B );
  80. void  __vf   VCFx_subV(  cfVector Z, cfVector X, cfVector Y, ui size,
  81.                          fComplex A, fComplex B );
  82. void  __vf   VCFx_subrV( cfVector Z, cfVector X, cfVector Y, ui size,
  83.                          fComplex A, fComplex B );
  84. void  __vf   VCFx_mulV(  cfVector Z, cfVector X, cfVector Y, ui size,
  85.                          fComplex A, fComplex B );
  86. void  __vf   VCFx_divV(  cfVector Z, cfVector X, cfVector Y, ui size,
  87.                          fComplex A, fComplex B );
  88. void  __vf   VCFx_divrV( cfVector Z, cfVector X, cfVector Y, ui size,
  89.                          fComplex A, fComplex B );
  90.  
  91. void  __vf   VCFx_addReV(  cfVector Z, cfVector X, fVector Y, ui size,
  92.                            fComplex A, fComplex B );
  93. void  __vf   VCFx_subReV(  cfVector Z, cfVector X, fVector Y, ui size,
  94.                            fComplex A, fComplex B );
  95. void  __vf   VCFx_subrReV( cfVector Z, cfVector X, fVector Y, ui size,
  96.                            fComplex A, fComplex B );
  97. void  __vf   VCFx_mulReV(  cfVector Z, cfVector X, fVector Y, ui size,
  98.                            fComplex A, fComplex B );
  99. void  __vf   VCFx_divReV(  cfVector Z, cfVector X, fVector Y, ui size,
  100.                            fComplex A, fComplex B );
  101. void  __vf   VCFx_divrReV( cfVector Z, cfVector X, fVector Y, ui size,
  102.                            fComplex A, fComplex B );
  103.  
  104. void __vf VCF_lincomb( cfVector Z, cfVector X, cfVector Y, ui size,
  105.                        fComplex CX, fComplex CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  106.  
  107. /*************** Functions of a sub-set of elements  ********************/
  108.  
  109. void  __vf  VCF_subvector_equC(  cfVector Y, ui subsiz, unsigned samp,
  110.                                  fComplex C );
  111. void  __vf  VCF_subvector_equV(  cfVector Y, ui subsiz, unsigned samp,
  112.                                  cfVector X );
  113.  
  114. void  __vf  VCF_subvector_addC(  cfVector Y, ui subsiz, unsigned samp,
  115.                                  fComplex C );
  116. void  __vf  VCF_subvector_subC(  cfVector Y, ui subsiz, unsigned samp,
  117.                                  fComplex C );
  118. void  __vf  VCF_subvector_subrC( cfVector Y, ui subsiz, unsigned samp,
  119.                                  fComplex C );
  120. void  __vf  VCF_subvector_mulC(  cfVector Y, ui subsiz, unsigned samp,
  121.                                  fComplex C );
  122. void  __vf  VCF_subvector_divC(  cfVector Y, ui subsiz, unsigned samp,
  123.                                  fComplex C );
  124. void  __vf  VCF_subvector_divrC( cfVector Y, ui subsiz, unsigned samp,
  125.                                  fComplex C );
  126.  
  127. void  __vf  VCF_subvector_addV(  cfVector Y, ui subsiz, unsigned samp,
  128.                                  cfVector X );
  129. void  __vf  VCF_subvector_subV(  cfVector Y, ui subsiz, unsigned samp,
  130.                                  cfVector X );
  131. void  __vf  VCF_subvector_subrV( cfVector Y, ui subsiz, unsigned samp,
  132.                                  cfVector X );
  133. void  __vf  VCF_subvector_mulV(  cfVector Y, ui subsiz, unsigned samp,
  134.                                  cfVector X );
  135. void  __vf  VCF_subvector_divV(  cfVector Y, ui subsiz, unsigned samp,
  136.                                  cfVector X );
  137. void  __vf  VCF_subvector_divrV( cfVector Y, ui subsiz, unsigned samp,
  138.                                  cfVector X );
  139.  
  140.  
  141. /*********************  Mathematical Functions *************************/
  142.  
  143. int   __vf   VCF_neg(  cfVector Y, cfVector X, ui size );
  144. int   __vf   VCF_conj( cfVector Y, cfVector X, ui size );
  145. int   __vf   VCF_abs(   fVector Y, cfVector X, ui size );
  146. int   __vf   VCF_inv(  cfVector Y, cfVector X, ui size );
  147. int   __vf   VCFx_inv( cfVector Y, cfVector X, ui size,
  148.                        fComplex A, fComplex B );
  149.  
  150. int  __vf   VCF_square(   cfVector Y, cfVector X, ui size );
  151. int  __vf   VCFx_square(  cfVector Y, cfVector X, ui size,
  152.                           fComplex A, fComplex B );
  153. int  __vf   VCF_cubic(    cfVector Y, cfVector X, ui size );
  154. int  __vf   VCFx_cubic(   cfVector Y, cfVector X, ui size,
  155.                           fComplex A, fComplex B );
  156. int  __vf   VCF_quartic(  cfVector Y, cfVector X, ui size );
  157. int  __vf   VCFx_quartic( cfVector Y, cfVector X, ui size,
  158.                           fComplex A, fComplex B );
  159. int  __vf   VCF_ipow(     cfVector Y, cfVector X, ui size, int ipow );
  160. int  __vf   VCFx_ipow(    cfVector Y, cfVector X, ui size, int ipow,
  161.                           fComplex A, fComplex B, fComplex C );
  162. int  __vf   VCF_pow(      cfVector Y, cfVector X, ui size, fComplex Expo );
  163. int  __vf   VCFx_pow(     cfVector Y, cfVector X, ui size, fComplex Expo,
  164.                           fComplex A, fComplex B, fComplex C );
  165. int  __vf   VCF_powReExpo(  cfVector Y, cfVector X, ui size, float Expo );
  166. int  __vf   VCFx_powReExpo( cfVector Y, cfVector X, ui size, float Expo,
  167.                             fComplex A, fComplex B, fComplex C );
  168.  
  169. int  __vf   VCF_sqrt(  cfVector Y, cfVector X, ui size );
  170. int  __vf   VCFx_sqrt( cfVector Y, cfVector X, ui size,
  171.                        fComplex A, fComplex B, fComplex C );
  172.  
  173. int  __vf   VCF_log(   cfVector Y, cfVector X, ui size );
  174. int  __vf   VCF_log2(  cfVector Y, cfVector X, ui size );
  175. int  __vf   VCF_log10( cfVector Y, cfVector X, ui size );
  176. #define     VCF_ln   VCF_log
  177. int  __vf   VCFx_log(  cfVector Y, cfVector X, ui size,
  178.                        fComplex A, fComplex B, fComplex C );
  179. int  __vf   VCFx_log2( cfVector Y, cfVector X, ui size,
  180.                        fComplex A, fComplex B, fComplex C );
  181. int  __vf   VCFx_log10( cfVector Y, cfVector X, ui size,
  182.                        fComplex A, fComplex B, fComplex C );
  183. #define     VCFx_ln    VCFx_log
  184.  
  185. int  __vf   VCF_exp(  cfVector Y, cfVector X, ui size );
  186. int  __vf   VCFx_exp( cfVector Y, cfVector X, ui size,
  187.                       fComplex A, fComplex B, fComplex C );
  188. int  __vf   VCF_expArbBase(  cfVector Y, cfVector X, ui size, fComplex Base );
  189. int  __vf   VCFx_expArbBase( cfVector Y, cfVector X, ui size, fComplex Base,
  190.                              fComplex A, fComplex B, fComplex C );
  191.  
  192. int  __vf   VCF_sin(  cfVector Y, cfVector X, ui size );
  193. int  __vf   VCFx_sin( cfVector Y, cfVector X, ui size,
  194.                       fComplex A, fComplex B, fComplex C );
  195. int  __vf   VCF_cos(  cfVector Y, cfVector X, ui size );
  196. int  __vf   VCFx_cos( cfVector Y, cfVector X, ui size,
  197.                       fComplex A, fComplex B, fComplex C );
  198. int  __vf   VCF_tan(  cfVector Y, cfVector X, ui size );
  199. int  __vf   VCFx_tan( cfVector Y, cfVector X, ui size,
  200.                       fComplex A, fComplex B, fComplex C );
  201.  
  202. int  __vf   VCF_asin(  cfVector Y, cfVector X, ui size );
  203. int  __vf   VCFx_asin( cfVector Y, cfVector X, ui size,
  204.                        fComplex A, fComplex B, fComplex C );
  205. int  __vf   VCF_acos(  cfVector Y, cfVector X, ui size );
  206. int  __vf   VCFx_acos( cfVector Y, cfVector X, ui size,
  207.                        fComplex A, fComplex B, fComplex C );
  208. int  __vf   VCF_atan(  cfVector Y, cfVector X, ui size );
  209. int  __vf   VCFx_atan( cfVector Y, cfVector X, ui size,
  210.                        fComplex A, fComplex B, fComplex C );
  211.  
  212. int  __vf   VCF_sinh(  cfVector Y, cfVector X, ui size );
  213. int  __vf   VCFx_sinh( cfVector Y, cfVector X, ui size,
  214.                        fComplex A, fComplex B, fComplex C );
  215. int  __vf   VCF_cosh(  cfVector Y, cfVector X, ui size );
  216. int  __vf   VCFx_cosh( cfVector Y, cfVector X, ui size,
  217.                        fComplex A, fComplex B, fComplex C );
  218. int  __vf   VCF_tanh(  cfVector Y, cfVector X, ui size );
  219. int  __vf   VCFx_tanh( cfVector Y, cfVector X, ui size,
  220.                        fComplex A, fComplex B, fComplex C );
  221.  
  222.  
  223. #ifdef __cplusplus
  224. }
  225. #endif
  226.  
  227.  
  228. #endif /* __VCFMATH_H */
  229.